دورة أساسيات البايثون مع الأستاذ سليمان القسيمي - الدرس السابع : الحلقات for and while و مقدمة عن المكتبات :
أيها الأحبة ، السلام عليكم و رحمة الله و بركاته و طابت أوقاتكم بكل ما هو خير و ما هو جميل .
اليوم وصلنا ، و بتوفيق من الله و عونه ، لدرسنا السابع في هذه الدورة،سنواصل اليوم ما بدأناه في الدرس السابق دراسة الحلقات التكرارية for و سنبدأ الحلقات while و سنقدم موجزا صغيرا كمدخل لدراسة المكتبات في البايثون .
نتوكل على الله و نبدأ بحل التمرين ، و هذا تذكير بنصه :
هذه قائمة تحتوي أسماء طلبة و درجاتهم :
students = [["ali", 97], ["mohamed", 92] , ["ahmed",94],["aissa",96]]
أكتب برنامجا يظهر رسالة تطلب من المستخدم إدخال اسم الطالب المراد معرفة معدله الأكاديمي, ثم يقوم البرنامج بالدوران على قائمة الطلاب للبحث عن اسم الطالب المحدد.
داخل حلقة الدوران سنسأل البرنامج عن قيمة الخانة الأولى للقائمة الفرعية, إذا كانت القيمة مساوية لاسم الطالب الذي أدخله المستخدم فسنأتي بمعدله التراكمي من الخانة الثانية ونطبع كلًا من اسم الطالب ومعدله.

حل التمرين :
students = [["ali", 97], ["mohamed", 92] , ["ahmed",94],["aissa",96]]
نطبع القائمة لنتأكد من أننا كتبناها بشكل صحيح :
print(students)
ثم ننشىء المتغير الذي سنخزن فيه إسم الطالب المراد معرفة درجاته 
name = input("أدخل إسم الطالب")
إنشاء حلقة تكرارية تدور على عناصر القائمة الكبيرة و هذه العناصر هي بذاتها قائمات صغيرة 
for s in students:
نقارن بين ما أدخله المستخدم و عناصر القائمة و بالتحديد مع كل عنصر أول في كل قائمة صغيرة أي العنصر ذي المرتبة 0 و هي العناصر الحاملة لأسماء الطلبة 
    if name == s[0]:
لو تطابق الاسم الذي أدخله المستخدم مع أي من الأسماء نطبع الاسم و الدرجة 
        print(f"الطالب {s[0]}حصل على المعدل { s[1]}")
و اذا تحقق الشرط و عثرنا على اسم الطالب في القائمة نكسر الحلقة التكرارية 
        break
else:
و إلا .....يعني لو لم نجد الاسم الذي نبحث عنه نطبع الرسالة التالية للمستخدم .
    print("للأسف،لم يتمّ العثور على هذا الطالب في قاعدة البيانات")
    كما لاحظتم في هذا التمرين إستخدمنا break و هي تكسر الحلقة for عندما يتحقق شرط if .
و توجد أيضا continueو هذا مثال على كيفية إستخدامها :
names = ["ali","khaled"]
for n in names:
    if n == "ali":
        continue    
    print("end")

إن كان هذا المثال لم يوضّح لكم حكاية continue هذه فلنأخذ مثالا ثانيا :
numbers = [1,2,3,4,5,6,7,8,9,10]
عرّفنا متغيّرا على شكل قائمة و وضعنا فيه الأرقام من 1 الى 10 
for n in numbers :
أنشأنا حلقة forستمر عبر كل عناصر القائمة عنصرا عنصرا 
    if n%2 != 0:
وضعنا شرطا و قلنا للحلقة إفحصي كل عدد تمرين عليه ، الشرط هو فرز الأعداد الفردية و هي الاعداد التي يكون باقي قسمتها على 2 لا يساوي 0 ، فأذا تحقق هذا الشرط - أي اذا كان العدد فرديا - فماذا سيفعل البايثون ؟ 
        print("سنتجاوز الرقم", n)
لو تحقق الشرط سيطبعلنا عبارة "سنتجاوز هذا الرقم و سيذكر لنا ما هو الرقم الذي سيتجاوزه ، سيتجاوزه يعني لن ينفذ عليه باقي الكود  
        continue
عبارة continue هي التي ستجبر البايثون على تجاوز الأعداد الفردية (بناء على الشرط الذي وضعناه) و بالتالي لن ينفذ عليه باقي الكود الذي سنكتبه بعد سطر continue هذا .
    print(n*n)
هنا سيطبع لنا مربع الأعداد التي لم يتجاوزها البايثون أي مربع الأعداد الزوجية التي لا ينطبق عليها شرطنا الذي وضعناه بواسطة if .
و هذه هي نتيجة الكود و ستلاحظون بأنفسكم أن الأعداد الفردية يكتب أمامها " سنتجاوز الرقم" أما الأعداد الزوجية فإنه يطبع لنا مربعها و هذا بالضبط ما أردناه من مثالنا هذا و هذا أفضل دليل على عمل continue و ما تقوم به من دور .

سنتجاوز الرقم 1
4
سنتجاوز الرقم 3
16
سنتجاوز الرقم 5
36
سنتجاوز الرقم 7
64
سنتجاوز الرقم 9
100

continue and break نستخدمهما في الحلقات التكرارية فقط و قد شرحهما الأستاذ سليمان بالتفصيل في هذا الدرس السابع من دورة أساسيات البايثون .

الحلقة while :

while loop هي من حيث المبدأ مثل for loop إذ تكرر شيئا ما و لكنها مختلفة عن for من حيث أنها لا تدور على عناصر معينة بل هي تخضع لشرط طالما ذلك الشرط متحقق فإن البرنامج ينفذ أمرا ما .     

count = 1
while count <= 10:
    print(count)
    count+=1
و هذه هي نتيجة تنفيذ هذا الكود :
1
2
3
4
5
6
7
8
9
10

و الآن و بعد أن عرفنا كيف تعمل الحلقة while  ، ما رأيكم لو نضيفها لتمريننا السابق و نرى ما الذي ستدخله من تحسينات على حل التمرين ؟ :
students = [["ali", 97], ["mohamed", 92] , ["ahmed",94],["aissa",96]]
print(students)
while True:
    name = input("أدخل إسم الطالب و للخروج من البرنامج أدخل حرف e ")
    if name == "e":
        break
    for s in students:
        if name == s[0]:
            print(f"الطالب {s[0]}حصل على المعدل { s[1]}")
            break
    else:
        print("للأسف،لم يتمّ العثور على هذا الطالب في قاعدة البيانات")
أنصح بالعودة لتسجيل هذا الدرس فقد قام الأستاذ بشرح هذه النقاط بشكل رائع و مبسط و واضح جدا .

المكتبات :
ما هي المكتبة البرمجية؟ و ما هي أهم المكتبات المستخدمة في لغة بايثون Python؟ 
تُعد لغة البرمجة بايثون (Python) واحدة من أكثر لغات البرمجة شعبية في وقتنا الحالي، وهناك العديد من الأسباب التي جعلتها مشهورة في عالم البرمجة ومن أهم هذه الأسباب هو وجود مجموعة كبيرة من المكتبات التي يمكن للمستخدمين التعامل معها حسب احتياجاتهم. 
ما هي المكتبة البرمجية؟
هي مجموعة من ملفات الأكواد الجاهزة والإجراءات البرمجية المستقلة التي يمكن استدعاؤها من قبل البرنامج لتنفيذ أوامر معينة، والهدف الرئيسي من المكتبات البرمجية هو تسهيل تنفيذ أوامر معينة ضمن أي تطبيق، وهناك مجموعة من المكتبات المهمة المستخدمة في لغة بايثون سوف نتطرق لها في هذا المقال.
أهم المكتبات المستخدمة في لغة بايثون Python:
• مكتبة Numpy: تُعتبر واحدة من أهم المكتبات الرياضية الأساسية التي تُستخدم على نطاق واسع في لغة البرمجة بايثون حيث تجعل التطبيقات الرياضية المُعقدة بسيطة للغاية. ومن أهم ميزاتها أنها تُستخدم في دعم عمليات الجبر الخطي (Linear algebra)، وفي التعامل مع المصفوفات ويتم الاعتماد عليها من قبل الباحثين في إجراء العمليات الحسابية الكبيرة والمُعقّدة على اختباراتهم العلمية.
• مكتبة Pandas: تُقدم هذه المكتبة مجموعة من التراكيب والأدوات البرمجية بالاعتماد على مكتبة (Numpy) لتجعل عملية تحليل ومعالجة البيانات أمراً سهلاً وسريعاً. وأهم ما يميز هذه المكتبة أنها تقدم ما يسمى بإطار البيانات (Data frame) والذي يُسهل عملية استيراد البيانات بصيغها المختلفة من الملفات وينقلها للذاكرة العشوائية، وتُوفر أيضاً إمكانية إعادة تشكيل هيكل البيانات (Reshaping)، وتُسهل دمج البيانات بعضها ببعض.
• مكتبة Scipy: تأتي هذه المكتبة بالمرتبة الأولى في مجال علم البيانات في لغة بايثون، حيث تستخدم في مجال تحليل البيانات (Data Analysis)، ومعالجة الصور والعمليات الحسابية المُعقدة بالاعتماد على مجموعة أخرى من المكتبات المشهورة مثل: (Numpy ،Pandas ،Matplotlib)، وتقدم أيضاً مجموعة من الدوال التي تُستخدم في مجال الاحتمالات والتحليل الإحصائي.
• مكتبة Matplotlib: وهي أحد أشهر المكتبات المُستخدمة في مجال التمثيل المرئي للبيانات (Visualization) حيث تُستخدم في رسم المخططات والرسومات البيانية والإحصائية وتوفر إمكانية إظهار المخططات البيانية بشكل مُلون.
• مكتبة Pygame: هي أحد المكتبات الشهيرة والقوية في مجال تصميم وتطوير الألعاب ثنائية البعد في بيئة لغة البرمجة بايثون، حيث يمكنك صناعة لعبتك الخاصة بجرافيك متميز وتحكم جيد وعلى منصات مختلفة أيضًا بالاعتماد على هذه المكتبة.
• مكتبة PyGtk: تُعد هذه المكتبة أحد الخيارات المُهمة في تصميم تطبيقات بواجهات المُستخدم الرسومية (GUI (Graphical user interface.
• مكتبة SQLAlchemy: تعتبر من أهم المكتبات التي تُستخدم في إجراء العمليات الرئيسية على قواعد البيانات (Database) من نوع SQL، حيث تُسهل عمليات الوصول والتعديل على قواعد البيانات.
• مكتبة Requests: هي مكتبة تمكنّنا من التعامل مع بروتوكول(HTTP(Hypertext Transfer Protocol من حيث إرسال الطلبات (request) واستقبال الردود وهذا البروتوكول مسؤول عن نقل البيانات بين جهتين الأولى هي العميل (Client)، والثانية هي الخادم (Server).
• مكتبة Beautiful Soup: هي إحدى المكتبات التي تستخدم في مجال تنظيم البيانات حيث تقوم بتحويل البيانات غير المُنسقة إلى بيانات مُنسقة، وتوفر إمكانية التحويل بين أنواع مختلفة من ملفات البيانات.
• مكتبة TensorFlow: هي مكتبة مفتوحة المصدر للحساب الرقمي وتعلم الآلة في بيئة بايثون، تم تصميمها بواسطة فريق (Google Brain) حيث تُستخدم في كل تطبيق من تطبيقات جوجل في مجال التعلم الآلي، وتُمكّن هذه المكتبة المطورين من إنشاء رسومات بيانية لعملية تدفق البيانات.
• مكتبة Scikit-learn: تعتبر واحدة من أهم مكتبات بايثون المُستخدمة في مجال تعليم الآلة وتعتمد بشكل رئيسي على مكتبة (Scipy)، والهدف الرئيسي من هذه المكتبة أنها تُقدم للمستخدمين خوارزميات خاصة بتعليم الآلة.
• مكتبة كيراس Keras: هي واحدة من المكتبات العالية المستوى مفتوحة المصدر التي تُستخدم في مجال تعلم الآلة، وتوفر مجموعة من الأدوات (Tools) التي تساعد في عملية معالجة الصور وإنشاء الرسوم البيانية، وتتميز هذه المكتبة بسرعة أداءها في عملية التدريب وتُعتبر مهمة جداً في مجالات التدريب عند الباحثين وتستند في عملها على مكتبات أخرى مثل: مكتبة (TensorFlow)، وهي قيد الاستخدام حالياً في العديد من التطبيقات مثل: (Netflix، Uber).
• مكتبة باي تورش PyTorch: هي مكتبة تُستخدم في مجال تعلم الآلة مبنية على لغة البرمجة بايثون وتدعم هذه المكتبة معالجة المصفوفات متعددة الأبعاد، وتم تطويرها من قبل مختبر الأبحاث الخاص بالذكاء الاصطناعي التابع لشركة فيسبوك لمساعدة الباحثين على بناء نماذجهم الخاصة.

 المصدر 
The Python Standard Library
Top Python Libraries for Data Science
NumPy Introduction
Python Libraries – Python Standard Library & List of Important Libraries
Python Libraries
Scikit-learn
مكتبات بايثون
مكتبة Matplotlib
مكتبة Numpy
مكتبة PyGtk
مكتبة Requests
مكتبة Scipy
و بعد هذه المقدمة النظرية القصيرة حول المكتبات في البايثون ، و هو مقال إخترته لكم من الأنترنت في إطار مزيد إثراء دورتنا و نعود للجانب التطبيقي ، حيث قام أستاذنا سليمان القسيمي و في هذا الدرس السابع ، بإستعراض لإحدى مكتبات البايثون :
مكتبة webbrowser هي مكتبة جاهزة و مدمجة مع البايثون و تقوم بفتح الملف أو الموقع الذي تضعه بين قوسي دالتها الرئيسية open .
نبدأ أولا بإستدعاء المكتبة هكذا : 
import webbrowser
ثم نكتب الأمر الذي سيحملنا للموقع (هنا مثال قوقل) 
webbrowser.open("www.google.com")
و توجد طريقة أخرى لتنفيذ نفس الأمر :
عوض إستدعاء كل المكتبة ، نستدعي  دالتها open فقط هكذا :
from webbrowser import open
و في هذه الحالة نذكر في الأمر إسم الدالة فقط دون ذكر إسم المكتبة ، هكذا :
open("www.google.com")
و إن شاء الله نلتقي في الدرس الثامن حيث سنواصل دراسة أمثلة أخرى من مكتبات البايثون و نواصل تقدمنا في دراسة أساسيات البايثون و إلى أن نلتقي بكم أترككم في حفظ الله و رعايته .

